package com.raising.modules.sys.dao;

import com.raising.framework.annotation.MyBatisDao;
import com.raising.framework.dao.ICrudDao;
import com.raising.modules.sys.entity.User;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 用户Dao接口
 * @author gaoy
 */
@MyBatisDao
public interface UserDao extends ICrudDao<User> {

	/**
	 * 根据用户名获取用户信息
	 * 
	 * @param username
	 * @return
	 */
	User getUserByUserName(@Param("username") String username);

	/**
	 * 获取用户列表
	 * @param users
	 * @return
	 */
	List<Map> getUsers(@Param("users") String[] users);

	/**
	 * 更新用户状态
	 * @Title: updateStatus
	 * @return int    返回类型
	 * @param user
	 * @author xieht
	 * @time 2017-5-10上午10:21:42
	 */
	int updateStatus(User user);

	/**
	 * 更新用户冻结状态
	 * @author GaoYuan
	 * @param userId
	 * @param locked
	 * @return
	 */
	int updateLocked(@Param("id") String userId, @Param("locked") int locked);

	/**
	 * 根据角色标识或机构查询所有用户
	 * @author gaoyuan
	 * @param roleId
	 * @param orgId
	 * @return
	 */
	List<User> findListByRoleId(@Param("roleId") String roleId, @Param("orgId") String orgId);

	/**
	 * 根据所属机构查询用户信息
	 * @param user
	 * @return
	 */
	List<User> selectUserInfoToList(User user);
	/**
	 * 更新主要字段
	 * @author GaoYuan
	 * @datetime 2018/1/16 下午3:21
	 */
	int updateMain(User user);
	/**
	 * 用户更新个人信息
	 * @author GaoYuan
	 * @datetime 2018/1/23 下午8:20
	 */
	int updateSelf(User user);
	/**
	 * 更新用户登录信息
	 * @author gaoy
	 * 2017 2017-5-22 上午11:08:09
	 * @param userId
	 * @param ip
	 * @param loginDate
	 * @return
	 */
	int updateLoginInfo(@Param("userId") String userId, @Param("ip") String ip, @Param("loginDate") Date loginDate);
	/**
	 * 更新用户头像
	 * @Title: updateHeadImhg
	 * @param user
	 * @return int    返回类型
	 * @author shimj
	 * @time 2017-6-1上午10:21:42
	 */
	int updateHeadImg(User user);

	/**
	 * 更新密码
	 * @author GaoYuan
	 * @datetime 2018/1/16 下午7:09
	 */
	int updatePassword(User user);
	/**
	 * 更新机构（单位）
	 * @author GaoYuan
	 * @datetime 2018/1/20 上午10:32
	 */
	int updateOrg(User user);
	/**
	 * 更新菜单展开收缩状态
	 * @author GaoYuan
	 * @datetime 2018/3/12 下午4:59
	 */
	int updateIsOpen(@Param("userId") String userId,@Param("isOpen") String isOpen);
}
